#pragma once

#pragma managed

#include "..\..\BWAPI\Unit.h"

using namespace BroodWar::Api;
using namespace BroodWar::Api::Enum;

namespace BroodWar
{
	namespace Addon
	{
		public interface class IReservedMap
		{
			void ReserveTiles(TilePosition^ position, Api::Enum::UnitType type, int width, int height);
			void ReserveTiles(TilePosition^ position, Api::Enum::UnitType type, int width);
			void ReserveTiles(TilePosition^ position, Api::Enum::UnitType type);
			void FreeTiles(TilePosition^ position, int width, int height);
			void FreeTiles(TilePosition^ position, int width);
			void FreeTiles(TilePosition^ position);
			bool IsReserved(int x, int y);
			bool IsReserved(TilePosition^ p);
			bool CanBuildHere(Unit^ builder, TilePosition^ position, Api::Enum::UnitType type);
			Api::UnitType^ GetReservedType(int x, int y);
			Api::UnitType^ GetReservedType(TilePosition^ p);
		};

		BWSAL::ReservedMap* ConvertIReservedMap(IReservedMap^ map);
	}
}
